Introducción general al uso de R
Clase práctica 01

Autor/a
Afiliación

Ignacio Minoli
minolicnp@gmail.com

Observatorio de Biodiversidad del Bosque Atlántico (OBBA) Instituto de Biología Subtropical (IBS) - Unidad Ejecutora del CONICET - UNaM

Fecha de publicación

14 de agosto de 2024

1 Instalación de R

1.1 Windows

La instalación de R puede hacerse con la descarga de archivo .exe con su última versión de la web oficial de R Cran: https://cran.r-project.org/bin/windows/base/

La instalación puede realizarse como cualquier otro programa con el archivo .exe y junto con este ya se instala un GUI mínimo para poder correr comandos en R. A pesar de que este GUI no posee capacidades de edición, code snippets, etc. ya incorporados el R base es completamente funcional.

Una vez instalado R, la PC está lista para instalar el Integrated Development Environment (IDE) que el usuario desee usar.

Actividad

  • 01- Abrir R.

  • 02- Click en File, y luego seleccionar New Script.

  • 03- Escribir en el editor para que imprima en la consola un texto: “Estoy en un curso de R usando Windows”.

  • 04- Presiona F5 y se verá en la consola.

print ("Estoy en un curso de R usando Windows")
[1] "Estoy en un curso de R usando Windows"

1.2 Linux

A pesar de que hay diferentes distribuciones de Linux derivadas de Debian o Arch, se detalla a continuación el método de instalación recomendada para aquellas distribuciones de Linux basadas en Debian. Todos los detalles de la instalación en este tipo de sistema operativo, está detallado en https://cran.r-project.org/bin/linux/ubuntu/.

Utilizaremos el mirror de R oficial https://cloud.r-project.org, el cual de manera automática redireccionará el pedido al mirror de CRAN más cercano.

# Abriendo la terminal de bash en Linux, ejecutar:
sudo apt install -y --no-install-recommends software-properties-common dirmngr

# Agregar los keys
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc

# Agregar el repositorio en Linux de R 4.0 desde CRAN.
# Cambiar 'focal' a 'jammy' o 'noble' según sea tu distro
sudo add-apt-repository 
"deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

# Y luego...
sudo apt update
sudo apt install -y r-base r-base-core r-recommended r-base-dev

Actividad

  • 01- Abrir una terminal de bash y tipear “R”.

  • 02- Escribir “print(Estoy en un curso de R usando Linux)”.

  • 04- Presiona enter.

print ("Estoy en un curso de R usando Linux")
[1] "Estoy en un curso de R usando Linux"

2 Instalación de IDEs

Este curso se concentrará en RStudio por tener mayores prestaciones que otros IDEs y es más accesible por las opciones visuales que posee.

2.1 RStudio: Opción seleccionada para el curso.

Hay diferentes versiones según sus requerimientos y usos. Se puede descagar para Windows o Linux (.deb es lo más recomendado) desde esta url https://www.rstudio.com/products/rstudio/download/.

Instalacion de RStudio

RStudio es un entorno de desarrollo integrado (IDE) de código abierto para los lenguajes de programación R y Python. Desarrollado por Posit (anteriormente RStudio, PBC), este IDE proporciona herramientas avanzadas para escribir, depurar y visualizar datos de manera eficiente. Es ampliamente utilizado en la ciencia de datos y análisis estadístico por su integración con R y paquetes como tidyverse y Shiny.

RStudio ofrece dos versiones: una gratuita y otra comercial con soporte adicional y funcionalidades avanzadas para empresas. Es compatible con Windows, macOS y Linux, y facilita la gestión de proyectos y análisis de datos desde una única interfaz.

Rstudio

Es especialmente valioso para investigadores, científicos de datos y analistas, proporcionando un conjunto de herramientas que mejora la productividad y permite un trabajo más fluido con datos.

Para el usuario normal y promedio la opción gratuita cumple con todos los requisitos. Una vez que RStudio está instalado, al abrirlo se integra solo con el R Base instalado anteriormente.

2.2 Positron: El futuro

Positron es un proyecto de código abierto en una fase temprana, diseñado para científicos de datos que utilizan herramientas como VS Code, JupyterLab o RStudio, pero que buscan un entorno de desarrollo más integrado y personalizable.

Instalación Positron

Ventajas: compatible con Python, R y otros lenguajes, ofrece una consola especializada, un panel de variables y un explorador de datos.

Desventajas: aún está en versión beta y carece de algunas funciones de RStudio y soporte para desarrollo remoto, permite instalar extensiones a través de OpenVSX.

2.3 Visual Studio Code: Opción alternativa 1.

Visual Studio Code (VS Code) es un editor de código fuente gratuito y de código abierto desarrollado por Microsoft. Muy versátil y está diseñado para admitir una amplia gama de lenguajes de programación, como Python, R, entre otros. Ofrece una experiencia personalizable con numerosas extensiones disponibles en su marketplace, que permiten agregar funcionalidades como depuración, control de versiones integrado y asistencia de inteligencia artificial con GitHub Copilot.

VS Code es compatible con diferentes plataformas, incluyendo Windows, macOS, y Linux, y permite a los desarrolladores escribir, editar y depurar código en cualquier entorno. Su interfaz de usuario es intuitiva, permitiendo la personalización mediante temas, atajos de teclado y perfiles. Además, se integra con servicios en la nube como GitHub Codespaces, lo que facilita el trabajo colaborativo y remoto.

Instalación Visual Studio Code

Este editor es ideal tanto para principiantes como para desarrolladores avanzados, ya que proporciona una amplia gama de herramientas y extensiones que mejoran la productividad. Con su terminal integrada, control de versiones, y soporte para múltiples lenguajes y entornos, VS Code se ha convertido en una herramienta esencial en el desarrollo de software moderno. Para más información, visita la página oficial.

2.4 Sublime Text: Opción alternativa 2.

Es un muy buen editor de R y otros lenguajes de programación. Es muy liviano, con varios paquetes desarrollados para su funcionalidad y gratuito. Es otra opción a RStudio y se puede usar en simultáneo. La web de Sublime Text permite la descarga para los 3 principales SO (Windows, Linux, Mac) y están todas las instrucciones detalladas en https://www.sublimetext.com/download.

Instalación de Sublime Text

Este IDE necesita conectarse con R (ya sea en Windows o en Linux) por lo que necesita algunos paquetes propios de Sublime Text para funcionar. Para esto hay que:

Este IDE necesita conectarse con R (ya sea en Windows o en Linux) por lo que necesita algunos paquetes propios de Sublime Text para funcionar. Para esto hay que:

Ver detalles de su instalación en la web

  • 01- Abrir Sublime Text.

  • 02- Abrir la linea de comandos con Win/Linux: ctrl+shift+p, Mac: cmd+shift+p

  • 03- Escribir “Type Install Package Control” y dar Enter.

Luego hay que instalar el paquete Terminus:

  • 01- Con Win/Linux: ctrl+shift+p, Mac: cmd+shift+p, escribir “Install Packages” y hacer click.

  • 02- Escribir “Terminus”.

  • 03- Una vez instalado Terminus, ctrl+shift+p, Mac: cmd+shift+p, escribir “Terminus: Open Default Shell in Panel”.

  • 04- Una vez abierto, sólo escribir “R” y quedará una sesión de R abierta conectada con Sublime Text.

Luego de esto, podemos probar R escribiendo print(“Estoy en un curso de R usando Sublime Text”) y presionando Enter.

3 Partes y configuración en RStudio

3.1 Revisión visual de los componentes

Posee diferentes componentes para que el usuario pueda controlar visualmente ciertos aspectos relacionados con el uso o manejo de: los datos, objetos, directorios de trabajo, ayuda, conexiones, paquetes, plots, sesión, temas, shortcuts, etc…

Paneles por default en RStudio

A lo largo del tiempo mucha gente ha mejorado la sintaxis y la organización de estos módulos de RStudio. Muchos especialistas coinciden en una mejor configuración a la hora de no usar mucho los menú de herramientas desde el mouse.

Mejor configuración de paneles en RStudio
  • Ir a “Tools” > “Global Options…” > “Pane Layout”

Los componentes visuales, configurables y la interconectividad de RStudio es lo que hace que este IDE sea el más usado para el lenguaje R. A continuación veremos las opciones en los menúes, opciones globales y secciones.

En el contexto de uso de RStudio, los shortcuts más importantes son:

  • CTRL+Enter ejecuta la linea o lo que está seleccionado.

  • CTRL+cursor arriba - abajo sube o baja en el código sin ejecutar nada.

  • CTRL+2 mueve el cursor hacia la consola.

  • CTRL+1 mueve el cursor hacia el editor de código.

  • CTRL+SHIFT+c comenta la linea o selección del código.

  • CTRL+SHIFT+m agrega un pipe donde esta el cursor en el código.

  • CTRL+f busca o reemplaza partes en el código.

  • F1 busca ayuda sobre la función donde esta posado el cursor.

  • ALT+SHIFT+g ir a la linea seleccionada del código.

  • CTRL+SHIFT+p pueden buscar todos los shortcuts o hacer click directamente!!

4 Ayuda y Documentación en Rstudio

4.1 Ayuda: resumida y técnica

La ayuda y documentación es muy importante, e incluso esta en los mismos mensajes de error o sugerencias de la consola. Por ejemplo:

# Ejercicio 01.1 correr este comando - trato de buscar una función que lea un 
# csv con datos
?read
# ¿Que aparece en este ejemplo? ¿En que sección y formato?
??read
# ¿Y ahora? ¿Qué ocurre? ¿Qué genera este comando?
?read.csv

Se puede además, emplear una función específica para ayuda help().

# Ejercicio  01.2 correr este comando - para un paquete
help(dplyr)
# Ejercicio  01.3 correr este comando - para una función
help(read.csv)

# Ejercicio  01.4 correr este comando - para una función 
# especificando el paquete
help("barplot", package = "graphics")
help("barplot", package = "terra")

¿Que diferencias encuentran entre las opciones de ayuda?

Esta asistencia con estructuras estandarizadas a modo de ayuda, nos da ciertas secciones con detalles de: a que paquete pertenece esa función, su descripción, uso, documentación de los argumentos, detalles, referencias y ejemplos.

4.2 Vignettes: ayuda detallada en tutoriales

¿Qué son los vignettes? Son tutoriales detallados con datos propios o simulados en donde se muestra todo el workflow de ciertas funciones para un paquete determinado.

# ¿Cómo ver todos los vignettes instalados en mi PC?
# Ejercicio  01.5 correr este comando
browseVignettes()

Podemos ver de manera puntual las ayudas con vignettes para un paquete específico. Por ejemplo:

browseVignettes('dplyr')

Para ver vignettes de paquetes que no estén instalados en mi PC, debo ir a la web de R cran y buscarla allí (e.g., https://cran.r-project.org/web/packages/dplyr/)

4.3 Sitios web

Principales sitios para la solución de problemas específicos. Es posible plantaer casos con ejemplos para destrabar situaciones puntuales. Siemre consultar con un set de datos reproducible.

5 Usos primarios en RStudio

Los usos primarios que se realizan en R son los aritméticos y aquellos que se realizan a través de operadores ya definidos que permiten acciones determinadas a concretar.

5.1 Como calculadora

Las operaciones aritméticas básicas que se realizan con R son:

+ suma
- resta
* multiplicación
/ división
^ exponencial
log2() logaritmo base 2
log10() logaritmo base 10
exp() exponencial
cos() coseno
sin() seno
tan() tangente
acos() arcocoseno
asin() arcoseno

Ejercicio 01.6. Buscar ayuda para comprender estas funciones:

abs() sqrt()

Ejercicio 01.7. Correr estas funciones primarias:

8 + 8
34 - 21
7 / 2
127 * 3
sqrt(434)
2.8 x 10^1
33951423023 + 26563000207 + 30622696532 + 37537414152 + 20559019283 / 5
(33951423023 + 26563000207 + 30622696532 + 37537414152 + 20559019283) / 5
2.8e+10
2.8e-10

Ejercicio 01.7.

A- ¿Qué ocurre en las últimas 3 lineas a correr?

B- ¿Hay algún error?

C- ¿Qué opinan?

D- Buscar ayuda sobre “format”.

E- Buscar ayuda sobre “citation” y buscar una cita.

5.2 Con operadores

Una de las primeras cosas a saber antes que los operadores, es el #. Este símbolo “comenta” todo el código en R. Es decir, evita que las lineas que comiencen con # sean ejecutadas en la consola. Es propio del lenguaje R y todos los IDEs lo interpretan de la misma manera. Sobre la linea/s utilizar el shortcut CTRL+SHIFT+c para comentar y descomentar.

El primer operador fundamental es <- ya que permite crear objetos. Los objetos son almacenados y pueden ser consultados “Environment”. Hay personas que utilizan a un operador con el símbolo igual, = que es equivalente a <- pero no es recomendado.

# Uso del numeral
2+2
[1] 4
# 2+2

# Uso del operador para crear objetos
a <- 2
a
[1] 2
b <- 2+2
b
[1] 4
  • Los operadores aritméticos son
operadores aritméticos
Operador Descripción
+ Suma
- Resta
* Multiplicación
/ División
^ o ** Exponencial
x <- 2
y <- 24
x + y
[1] 26
x * y
[1] 48
  • Los operadores relacionales son
operadores relacionales
Operador Descripción
< Menor
> Mayor
<= Menor o igual que
>= Mayor o igual que
== Igual a
!= No igual a
# Creo los objetos
x <- 12
y <- 24
# Evaluo la relación entre los objetos
x <= 12
[1] TRUE
x != 12
[1] FALSE
y == 24
[1] TRUE
  • Los operadores lógicos son
operadores lógicos
Operador Descripción
! NOT Lógico
& AND Lógico por elementos
edad <- 16

# Comentario 1
if (!(edad > 18)) {
  print("Es una persona menor de edad")
# Comentario 2
} else if(edad > 18 & edad <= 35) {
  print("Es una persona adulta joven")
# Comentario 3
} else if(edad == 36 | edad <= 60) {
  print("Es una persona adulta edad media")
# Comentario 4
} else {
  print("Es una persona adulta mayor")
}
[1] "Es una persona menor de edad"

Ejercicio 01.8.

A- Comentar la explicación de que ocurre en cada linea de comando de operadores lógicos reemplazando estos: # Comentario 1 # Comentario 2 # Comentario 3 # Comentario 4

B- Cambiar de edad 16 a: 1) edad 37; 2) edad 62.

  • Los operadores de asignación y otros son:
operadores asignación
Operador Descripción
<-, <<-, = Asignación hacia la izquierda
->, ->> Asignación hacia la derecha
; ejecuta 2 funciones en una misma linea
: rango
x <- 5
y <- 16
x ; y
[1] 5
[1] 16
# Que ocurre en estos comandos. ¿Que valor posee x?
x <- 5
x
[1] 5
x = 9
x
[1] 9
# Como trabajo con caracteres
texto_1 <- "abc"
texto_1

texto_2 <- "abc" "def"
texto_2

texto_3 <- c("abc", "def")
texto_3
Error: <text>:5:18: unexpected string constant
4: 
5: texto_2 <- "abc" "def"
                    ^
# Permite realizar rangos
serie <- 1:15
serie
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
serie_2 <- seq(15)
serie_2
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
serie_3 <- seq(from = 1, to = 15, by = 0.5)
serie_3
 [1]  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0  7.5  8.0
[16]  8.5  9.0  9.5 10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0

Ejercicio 01.9.

A- Hacer dos vectores de números:
  1) De -10 a 10.
  2) De 0 a 200 en rangos de 10.

6 Creación de objetos

Los objetos se pueden crearse no sólo con <- o = para que estén disponibles en el espacio de trabajo, sino también al cargar objetos de elementos externos: archivos de texto, archivos tabulados, web scrapping, o varios objetos en conjunto al cargar una imagen .RData.

# Ejemplos de como crear objetos nuevos
datos <- c(2, 3, 5)
# ¿¿Como se soluciona el error de este vector??
datos <- c(2, 3, A)
Error in eval(expr, envir, enclos): object 'A' not found
# Otra opción de incorporar objetos
data(iris)

Ejercicio 01.10.

A- Buscar ayuda sobre “datasets” y llamar otros 2 set de datos.

7 Manejo de directorios

Este es un aspecto importante ya que en R al usar data frames y hojas de cálculo. En la sección “Files” se ven todos los archivos y carpetas de directorio actual de trabajo. Si abro con RStudio un archivo xxx.R o xxx.r con botón derecho, automáticamente toma como directorio el directorio donde está alojado ese xxx.R archivo. Los directorios como otros vectores de caracteres, deben ser llamados entre comillas.

# Se detecta el directrio con:
getwd()
# Se define el directorio con:
setwd()

En R trabajar con los directorios, presenta diferencias entre Windows y Unix/Linux. En ambos SO además, es posible copiar directamente el archivo (e.g., un .csv) y luego pegar esa ruta para ser llamado en R.

7.1 Windows

getwd()
[1] "C:\\Users\\minol\\OneDrive\\Desktop\\Temp\\Fotos"

En Windows haya que cambiar de manera manual la barra separadora. Una alternativa no manual para que un archivo sea usado con CTRL+c como ruta, en Windows necesito luego de copiarlo correr readClipboard(). Esta función corrije automáticamente la barra separadora. Otra opción es definir el directorio primero y luego llamar el archivo.

7.2 Linux

getwd()
[1] "/home/ignacio/Dropbox/Curso.R.Basico/Clases.Practicas"

7.3 Rutas absolutas

Simplemente es cuando esta la ruta definida de manera completa, sin trabajar en un directorio específico que contiene todos los elementos para trabajar y ser llamados.

# Ejemplo de ruta absoluta
[1] "/home/ignacio/Documents/IBS/Bases.Datos/Atropellamientos/RAMFA.Base.xlsx"

7.4 Rutas relativas

Son las rutas definidas para interactuar y llamar diferentes objetos a ser utilizados en la sesión de trabajo.

getwd()
[1] "/home/ignacio/Dropbox/Curso.R.Basico/Clases.Practicas"

Ejercicio 01.11.

A- ¿Qué ventajas y desventajas crees tienen las rutas relativas y absolutas?

8 Repositorios en R

Otra opción es utilizar funciones o paquetes que no han pasado por las condiciones de R cran para ser publicado. Esto implica que quizás algunas opciones como la documentación y/o ayuda no esté presente o sea incompleta. Puede ser a partir de github o bioconductor y también poseen sus propias funciones para ser utilizados.

9 Instalación y llamado de paquetes

9.1 Instalación

Se utilizan las funciones para los paquetes de R cran:

install.packages()
help("install.packages")

update.packages()
help("update.packages")

remove.packages()
help("remove.packages")

load()
help("load")

detach()
help(detach)

Para bioconductor y github:

# Bioconductor
library(BiocManager)
install()

# github
library(devtools)
install_github()

library(remotes)
install_github()

Ejercicio 01.12.

A- Instalar los paquetes: tidyverse, dplyr, ggplot2, car, lattice desde R cran.

B- Instalar los paquetes desde github: stringr, dplyr.

9.2 Llamado de paquetes

Los paquetes una vez instalados pueden llamarse de dos maneras posibles:

# Es la función recomendada para la sesión de trabajo. Da errores detallados.
library(nombre_del_paquete)

# Es recomendado para usar adentro de funciones.
require(nombre_del_paquete)

# Opción para ejecutar una función de un paquete, SIN la necesidad de cargarlo.
library::function()

10 Librerías

Las librerías son los directorios físicos en donde estan alojados los paquetes instalados en la PC. Pueden ser múltiples las librerías y pueden ser seleccionadas o cambiadas de orden.

# Da la ubicación de la librería
.libPaths()

# Muestra todos los paquetes instalados
library()

# Muestra los paquetes cargados en la ssión
search()

Ejercicio 01.13.

I- Revisar las rutas definidas de librerías en tu PC.

II- Revisar cuales son los paquetes cargados en la sesión actual de trabajo.

III- Instalar los paquetes tidyverse y ggplot2. Luego cargarlos en la sesión de trabajo.

11 Ejercicios integradores

A- En este ejercicio tengo los valores de flores abiertas para una planta en función de 14 días, comenzando en un Lunes. Cada valor representa las flores abiertas de manera ordinal la últimas 2 semanas de flores abiertas: 9, 10, 12, 12, 13, 14, 14, 15, 14, 16, 16, 18, 17, 15.

1- Determinar el directorio de trabajo. getwd()

2- Crear un dataframe o tibble asignando dos variables o columnas: dias_semana y flores_abiertas. Luego de creado imprimo en la consola accediendo a cada columna o variable por separado. df <- tibble::tibble(dias_semana = c( “Lunes”, “Marte”, “Miercoles”, “Jueves”, “Viernes”, “Sabado”, “Domingo”, “Lunes”, “Marte”, “Miercoles”, “Jueves”, “Viernes”, “Sabado”, “Domingo” ), flores_abiertas = c( 9, 10, 12, 12, 13, 14, 14, 15, 14, 16, 16, 18, 17, 15 ) ) df

3- Investigo como utilizar las funciones summary(), mean(), min(), max() y tail() con las variables. summary(df) mean(df\(flores_abiertas) max(df\)flores_abiertas) min(df\(flores_abiertas) tail(df\)flores_abiertas)

4- Crear un vector de la columna flores_abiertas e imprimir el resultado vec <- df$flores_abiertas vec

5- OPCIONAL Determinar con operadores lógicos si las flores abiertas el día Domingo fueron menores a 15. Buscar ayuda con la función ifelse()

B- En un monitoreo de uso de comederos de colibri hago un conteo de presencias de una especie. Creo un nuevo vector con información de registros de presencia para una especie en los días de una semana. Los registros que tengo son: 17, 7, 5, 16, 8, 13, 14.

1- Determinar cuando las presencias superaron las 10 y cuando no llegaron a 10 para un dia en especial. Use ambos vectores en el mismo comando.

2- ¿Qué días de la semana cumplen esta condición?

C- Operador | (OR) y & (AND).

1- Correr en la consola estos códigos e interpretar las salidas:

TRUE | TRUE
TRUE | FALSE
FALSE | TRUE
FALSE | FALSE

Operador & (AND). Correr en la consola estos códigos e interpretar las salidas:

TRUE & TRUE
TRUE & FALSE
FALSE & TRUE
FALSE & FALSE

2- OPCIONAL Obtener del vector de las presencias de colibries con los días de mas de 15 visitas o para los dias Sabado utilizando el operador OR y guardarlo en un objeto nuevo llamado dato.

3- Buscar ayuda de la función seq(). Con esa función hacer un objeto con un vector de una secuencia numérica del 0 al 10 con un intervalo de 0.5. Luego generar un segundo objeto que diferencie los valores por debajo de 5 y por encima de 5, utilizando el operador !. ¿Cómo se interpreta la salida?